package br.com.edumobi.fragments;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import com.github.mikephil.charting.charts.PieChart;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.PieData;
import com.github.mikephil.charting.data.PieDataSet;

import java.util.ArrayList;
import java.util.List;

import br.com.edumobi.P;
import br.com.edumobi.R;

public class MEResultadoFragment extends GenericoFragment {

    private TextView textViewNomeTelaMEResultado;
    private PieChart pieChartQtdAcertoEErroMEResultado;
    private Button buttonFinalizarMEResultado;
    private Button buttonReiniciarMEResultado;

    private AcoesMEResultadoFragment activity;

    private int qtdAcertos;
    private int qtdErros;

    private View.OnClickListener clickButtonFinalizarMEResultado = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            activity.onFinalizar();
        }
    };

    private View.OnClickListener clickButtonReiniciarMEResultado = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            activity.onReiniciar();
        }
    };

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_me_resultado, container, false);

        textViewNomeTelaMEResultado = (TextView) view.findViewById(R.id.textViewNomeTelaMEResultado);
        pieChartQtdAcertoEErroMEResultado = (PieChart) view.findViewById(R.id.pieChartQtdAcertoEErroMEResultado);
        buttonFinalizarMEResultado = (Button) view.findViewById(R.id.buttonFinalizarMEResultado);
        buttonReiniciarMEResultado = (Button) view.findViewById(R.id.buttonReiniciarMEResultado);

        buttonFinalizarMEResultado.setOnClickListener(clickButtonFinalizarMEResultado);
        buttonReiniciarMEResultado.setOnClickListener(clickButtonReiniciarMEResultado);

        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        if (activity == null) {
            activity = (AcoesMEResultadoFragment) getActivity();

            qtdAcertos = activity.getQtdAcertos();
            qtdErros = activity.getQtdErros();
        }

        carregarPieChartQtdAcertoEErroMEResultado();
    }

    @Override
    public void showComponents() {
        textViewNomeTelaMEResultado.setVisibility(View.VISIBLE);
        pieChartQtdAcertoEErroMEResultado.setVisibility(View.VISIBLE);
        buttonFinalizarMEResultado.setVisibility(View.VISIBLE);
        buttonReiniciarMEResultado.setVisibility(View.VISIBLE);
    }

    @Override
    public void hideComponents() {
        textViewNomeTelaMEResultado.setVisibility(View.GONE);
        pieChartQtdAcertoEErroMEResultado.setVisibility(View.GONE);
        buttonFinalizarMEResultado.setVisibility(View.GONE);
        buttonReiniciarMEResultado.setVisibility(View.GONE);
    }

    private void carregarPieChartQtdAcertoEErroMEResultado() {

        pieChartQtdAcertoEErroMEResultado.setHoleRadius(40f);
        pieChartQtdAcertoEErroMEResultado.setRotationEnabled(true);
        pieChartQtdAcertoEErroMEResultado.animateXY(1500, 1500);
        pieChartQtdAcertoEErroMEResultado.setDescription(P.STRING_EMPITY);

        List<Entry> valoresY = new ArrayList<Entry>();
        valoresY.add(new Entry(qtdAcertos, 1));
        valoresY.add(new Entry(qtdErros, 0));

        ArrayList<String> valoresX = new ArrayList<String>();
        valoresX.add(getResources().getString(R.string.acertos));
        valoresX.add(getResources().getString(R.string.erros));

        ArrayList<Integer> cores = new ArrayList<Integer>();
        cores.add(getResources().getColor(R.color.azul_acerto));
        cores.add(getResources().getColor(R.color.vermelho_erro));

        PieDataSet setGraficoPizza = new PieDataSet(valoresY,".");
        setGraficoPizza.setSliceSpace(3f);
        setGraficoPizza.setColors(cores);

        PieData data = new PieData(valoresX, setGraficoPizza);
        pieChartQtdAcertoEErroMEResultado.setData(data);
        pieChartQtdAcertoEErroMEResultado.highlightValues(null);
        pieChartQtdAcertoEErroMEResultado.invalidate();
    }

    public interface AcoesMEResultadoFragment extends AcoesGenericoFragment {
        int getQtdAcertos();
        int getQtdErros();
        void onReiniciar();
        void onFinalizar();
    }
}